package com.jhgsys.internal.sypq.entity;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jhgsys.internal.common.converter.TimeConverter;
import com.jhgsys.internal.common.entity.BaseEntity;

import com.fasterxml.jackson.annotation.JsonFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;

import com.wuwenze.poi.annotation.Excel;
import com.wuwenze.poi.annotation.ExcelField;
import lombok.Data;


/**
 * 船模 Entity
 *
 * @author ganjun
 * @date 2024-11-13 19:03:49
 */
@Data
@TableName("sypq_model_ship")
@Excel("船模信息表")
public class ModelShip extends BaseEntity implements Serializable {

    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    @Size(max = 32, message = "{noMoreThan}")
    private String id;

    /**
     * 船模编号,编码规则：BM+年+月+四位序号
     */
    @TableField("ship_code")
    @ExcelField(value = "船模编号")
    private String shipCode;

    /**
     * 项目编号
     */
    @TableField("project_code")
    @Size(max = 32, message = "{noMoreThan}")
    @ExcelField(value = "项目编号")
    private String projectCode;

    /**
     * 项目名称
     */
    @TableField("project_name")
    @ExcelField(value = "项目名称")
    private String projectName;

    /**
     * 名称
     */
    @TableField("ship_name")
    @Size(max = 32, message = "{noMoreThan}")
    @ExcelField(value = "名称")
    private String shipName;

    /**
     * 船模来源:1.新加工,2:已有,3:外带
     */
    @TableField("source")
    @NotNull(message = "{required}")
    private Integer source;

    /**
     * 加工状态,数据字典MODEL_SHIP_PROCESS_STATUS,1:未开始,2:未上传图纸,3:待下料,4:待粗切,5:待修模,6:待油漆,7:待完工,8:已完工
     */
    @TableField("status")
    private Integer status;

    /**
     * 要求完成时间
     */
    @TableField("demand_enddate")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    @ExcelField(value = "要求完成时间", writeConverter = TimeConverter.class)
    private Date demandEnddate;

    /**
     * 实际开始时间
     */
    @TableField("actually_startdate")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    @ExcelField(value = "实际开始时间", writeConverter = TimeConverter.class)
    private Date actuallyStartdate;

    /**
     * 实际完成时间
     */
    @TableField("actually_enddate")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    @ExcelField(value = "实际完成时间", writeConverter = TimeConverter.class)
    private Date actuallyEnddate;

    /**
     * 船舶类型,1:油船,2:散装船,3:集装箱船,4:化学品船
     */
    @TableField("ship_type")
    private Integer shipType;

    /**
     * 缩尺比
     */
    @TableField("rate")
    private Float rate;
    /**
     * 船模类型,1:常规木模,2:分段式木模,3:板条船,4:母型船改型,5:其他
     */
    @TableField("model_type")
    private Integer modelType;

    /**
     * 申请时间
     */
    @TableField("apply_date")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date applyDate;

    /**
     * 实船总长
     */
    @TableField("length_origal")
    private Float lengthOrigal;
    /**
     * 模型总长
     */
    @TableField("length_model")
    private Float lengthModel;

    /**
     * 实船两柱间长
     */
    @TableField("column_width_origal")
    private Float columnWidthOrigal;

    /**
     * 模型两柱间长
     */
    @TableField("column_width_model")
    private Float columnWidthModel;

    /**
     * 实船型宽
     */
    @TableField("width_origal")
    private Float widthOrigal;

    /**
     * 模型型宽
     */
    @TableField("width_model")
    private Float widthModel;

    /**
     * 实船设计吃水
     */
    @TableField("water_deep_origal")
    private Float waterDeepOrigal;

    /**
     * 模型设计吃水
     */
    @TableField("water_deep_model")
    private Float waterDeepModel;

    /**
     * 实船型深
     */
    @TableField("body_deep_origal")
    private Float bodyDeepOrigal;

    /**
     * 模型型深
     */
    @TableField("body_deep_model")
    private Float bodyDeepModel;

    /**
     * 实船轴高
     */
    @TableField("axie_hight_origal")
    private Float axieHightOrigal;

    /**
     * 模型轴高
     */
    @TableField("axie_hight_model")
    private Float axieHightModel;

    /**
     * 实船轴间距
     */
    @TableField("axie_width_origal")
    private Float axieWidthOrigal;

    /**
     * 模型轴间距
     */
    @TableField("axie_width_model")
    private Float axieWidthModel;

    /**
     * 方形系数
     */
    @TableField("rect_rate")
    @Size(max = 32, message = "{noMoreThan}")
    private String rectRate;

    /**
     * 板块数
     */
    @TableField("block_number")
    @Size(max = 32, message = "{noMoreThan}")
    private String blockNumber;

    /**
     * 重量要求
     */
    @TableField("weight")
    @Size(max = 32, message = "{noMoreThan}")
    private String weight;

    /**
     * 首部升高
     */
    @TableField("head_height")
    @Size(max = 32, message = "{noMoreThan}")
    private String headHeight;

    /**
     * 尾部升高
     */
    @TableField("tail_height")
    @Size(max = 32, message = "{noMoreThan}")
    private String tailHeight;

    /**
     * 首侧推
     */
    @TableField("head_push")
    @Size(max = 32, message = "{noMoreThan}")
    private String headPush;

    /**
     * 尾侧推
     */
    @TableField("tail_push")
    @Size(max = 32, message = "{noMoreThan}")
    private String tailPush;

    /**
     * 备注
     */
    @TableField("memo")
    @Size(max = 300, message = "{noMoreThan}")
    private String memo;

    /**
     * 船模位置
     */
    @TableField("ship_position")
    private Integer shipPosition;

    /**
     * 原船模编号（当来源为已有显示）
     */
    @TableField("orig_ship_code")
    private String origShipCode;

    /**
     * 船模类型其他
     */
    @TableField("model_type_other")
    private String modelTypeOther;

    /**
     * 船模来源名称
     */
    @ExcelField(value = "来源")
    @TableField("source_name")
    private String sourceName;

    /**
     * 状态名称
     */
    @ExcelField(value = "状态")
    @TableField("status_name")
    private String statusName;

    /**
     * 船舶类型名称
     */
    @TableField("ship_type_name")
    private String shipTypeName;

    /**
     * 船模类型名称
     */
    @TableField("model_type_name")
    private String modelTypeName;

    /**
     * 船模位置名称
     */
    @TableField("ship_position_name")
    private String shipPositionName;

}